Création de sa clé GPG et utilisation avec passwordstore/enigmail/gpg-agent

visuel article clé GPGvisuel article clé GPG 
 

Expertise

Introduction

GPG est une version libre de PGP, un outil qui permet de chiffrer/déchiffrer et signer « à peu près tout et n’importe quoi ».

Chez NBS System, il est utilisé pour les keyring partagés, avec password store; les membres de l’équipe d’exploitation ont d’ailleurs bien souvent leur propre keyring GPG. Il est aussi utilisé pour chiffrer/signer ses mails (enigmail par exemple), et certains l’utilisent aussi pour remplacer les clés SSH, souvent avec un token (dongle) USB. Nous allons voir tous ces usages ici, a commencer par la création d’une clé GPG.

TL;DR/“mode expert”

Pour ceux qui savent déjà bien gérer GPG, voici les paramètres a prendre en compte:

Configurer GPG

~/.gnupg/gpg.conf:

#Minimal info leak no-emit-version
no-comments
export-options export-minimal

Display options keyid-format long
with-fingerprint
list-options show-uid-validity
verify-options show-uid-validity

Crypto options personal-cipher-preferences AES256
personal-digest-preferences SHA512
default-preference-list SHA512 SHA384 SHA256 RIPEMD160 AES256 TWOFISH BLOWFISH ZLIB BZIP2 ZIP Uncompressed
cipher-algo AES256
digest-algo SHA512
cert-digest-algo SHA512
compress-algo ZLIB
disable-cipher-algo 3DES
weak-digest SHA1

S2K options s2k-cipher-algo AES256
s2k-digest-algo SHA512
s2k-mode 3
s2k-count 65011712

Création de la clé GPG

Il s’agit ici de créer en réalité 4 clés GPG, une clé principale et 3 sous-clés, une pour chaque capability.
Une (sous-) clé GPG peut avoir 3 (4 pour la principale) capabilities:

Création de la clé principale

On lance la création de clé GPG et on sélectionne RSA avec capabilitiés custom pour ne garder que la capability “certify”. La clé va être en 4096bits et valide 2ans (bonnes pratiques avec ce genre de clés).

$ gpg2 –expert –full-gen-key
gpg (GnuPG) 2.2.12; Copyright (C) 2018 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Please select what kind of key you want:
(1) RSA and RSA (default)
(2) DSA and Elgamal
(3) DSA (sign only)
(4) RSA (sign only)
(7) DSA (set your own capabilities)
(8) RSA (set your own capabilities)
(9) ECC and ECC
(10) ECC (sign only)
(11) ECC (set your own capabilities)
(13) Existing key
Your selection? 8
Possible actions for a RSA key: Sign Certify Encrypt Authenticate
Current allowed actions: Sign Certify Encrypt

(S) Toggle the sign capability
(E) Toggle the encrypt capability
(A) Toggle the authenticate capability
(Q) Finished

Your selection? s

Possible actions for a RSA key: Sign Certify Encrypt Authenticate
Current allowed actions: Certify Encrypt

(S) Toggle the sign capability
(E) Toggle the encrypt capability
(A) Toggle the authenticate capability
(Q) Finished

Your selection? e

Possible actions for a RSA key: Sign Certify Encrypt Authenticate
Current allowed actions: Certify

(S) Toggle the sign capability
(E) Toggle the encrypt capability
(A) Toggle the authenticate capability
(Q) Finished

Your selection? q
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048) 4096
Requested keysize is 4096 bits
Please specify how long the key should be valid.
0 = key does not expire
= key expires in n days
w = key expires in n weeks
m = key expires in n months
y = key expires in n years
Key is valid for? (0) 2y
Key expires at (2 ans plus tard)
Is this correct? (y/N) y
GnuPG needs to construct a user ID to identify your key.

Real name: Pinpin Parrot

Email address: pinpin.parrot@nbs-system.com
Comment:
You selected this USER-ID:
« Pinpin Parrot pinpin.parrot@nbs-system.com« 

Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? o
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
(A ce moment là, on va vous demander de mettre une passphrase pour la cle GPG,
evidemment, utiliser un truc secure)
gpg: key 86E40654 marked as ultimately trusted
gpg: directory ‘/home/pinpin/.gnupg/openpgp-revocs.d’ created
gpg: revocation certificate stored as ‘/home/pinpin/.gnupg/openpgp-revocs.d/86E40654500145BE.rev’
public and secret key created and signed.

gpg: checking the trustdb
gpg: marginals needed: 3 completes needed: 1 trust model: PGP
gpg: depth: 0 valid: 2 signed: 0 trust: 0-, 0q, 0n, 0m, 0f, 2u
pub rsa4096/86E40654500145BE (creation date) [] [expires: (2ans apres)]
Key fingerprint = 7AFA 66C2 094A 0037 4AD2 CFD1 86E4 0654 5001 45BE
uid [ultimate] Pinpin Parrot pinpin.parrot@nbs-system.com
On peut vérifier qu’on a bien la cle avec gpg2 –list-keys
$ gpg2 –list-keys

/home/pinpin/.gnupg/pubring.gpg

pub rsa4096/86E40654500145BE (creation date) [C] [expires: (2ans apres)]
uid [ultimate] Pinpin Parrot pinpin.parrot@nbs-system.com

Création des sous-clés

Après la création de la clé principale, il faut donc créer 3 sous-clés, une pour chaque rôle (signer, déchiffrer, s’authentifier).
Il faut bien noter l’ID de la clé (aka ce qu’il y a après rsa4096/ sur un –list-keys), on va pas mal l’utiliser a partir de maintenant.
On va créer ici la clé pour déchiffrer (capability Encrypt seulement).

$ gpg2 –expert –edit-key 86E40654500145BE
gpg (GnuPG) 2.2.12; Copyright (C) 2018 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Secret key is available.

sec rsa4096/86E40654500145BE
created: (creation date) expires: (2 ans apres) usage: C
trust: ultimate validity: ultimate
ultimate. Pinpin Parrot pinpin.parrot@nbs-system.com

gpg> addkey
Please select what kind of key you want:
(3) DSA (sign only)
(4) RSA (sign only)
(5) Elgamal (encrypt only)
(6) RSA (encrypt only)
(7) DSA (set your own capabilities)
(8) RSA (set your own capabilities)
(10) ECC (sign only)
(11) ECC (set your own capabilities)
(12) ECC (encrypt only)
(13) Existing key
Your selection? 8

Possible actions for a RSA key: Sign Encrypt Authenticate
Current allowed actions: Sign Encrypt

(S) Toggle the sign capability
(E) Toggle the encrypt capability

(A) Toggle the authenticate capability
(Q) Finished

Your selection? s

Possible actions for a RSA key: Sign Encrypt Authenticate
Current allowed actions: Encrypt

(S) Toggle the sign capability
(E) Toggle the encrypt capability
(A) Toggle the authenticate capability
(Q) Finished

Your selection? q

RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048) 4096
Requested keysize is 4096 bits
Please specify how long the key should be valid.
0 = key does not expire
= key expires in n days
w = key expires in n weeks
m = key expires in n months
y = key expires in n years
Key is valid for? (0) 2y
Key expires at (2 ans apres)
Is this correct? (y/N) y
Really create? (y/N) y

We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.

sec rsa4096/86E40654500145BE
created: (creation date) expires: (2 ans apres) usage: C
trust: ultimate validity: ultimate
ssb rsa4096/8A752B11DD17F777
created: (creation date) expires: (2 ans apres) usage: E
ultimate. Pinpin Parrot pinpin.parrot@nbs-system.com


Il suffit ensuite de répéter l’operation avec les bonnes capabilitiés, une sous-clé avec S et une sous-clé avec A; À la fin, vous devriez avoir ceci:


sec rsa4096/86E40654500145BE
created: (creation date) expires: (2 ans apres) usage: C
trust: ultimate validity: ultimate
ssb rsa4096/8A752B11DD17F777
created: (creation date) expires: (2 ans apres) usage: E
ssb rsa4096/FE932A47056C55D7
created: (creation date) expires: (2 ans apres) usage: S
ssb rsa4096/54279AB1018E3E10
created: (creation date) expires: (2 ans apres) usage: A
ultimate. Pinpin Parrot pinpin.parrot@nbs-system.com
Une fois que tout est OK, on applique les changements:
gpg> save

Isoler la clé principale

Attention: pour avoir des backups des clés, ainsi que créer le certificat de revocation (voir plus bas), il faut le faire avant de lancer les commandes ci-dessous !

Il faut ensuite exporter les clés, la clé principale d’abord, et ensuite les sous-clés. Puis, on va tout vider pour ne remporter que les sous-clés.

$ gpg2 –export –armor 86E40654500145BE > public.pem
$ gpg2 –export-secret-subkeys –armor 86E40654500145BE > subkeys.pem
$ gpg2 –delete-secret-key 86E40654500145BE
$ gpg2 –import subkeys.pem


A la fin, on devrait avoir ca (noter le sec#, le dièse indique bien que GPG n’a plus la clé privée principale)

$ gpg2 –list-secret-keys
/home/pinpin/.gnupg/pubring.kbx
sec# rsa4096/86E40654500145BE (creation date) [C] [expires: (2ans apres)]
uid [ultimate] Pinpin Parrot pinpin.parrot@nbs-system.com
ssb rsa4096/8A752B11DD17F777 (creation date) [E] [expires: (2ans apres)]
ssb rsa4096/FE932A47056C55D7 (creation date) [S] [expires: (2ans apres)]
ssb rsa4096/54279AB1018E3E10 (creation date) [A] [expires: (2ans apres)]

Utiliser GPG

Backup de sa clé GPG

Il faut savoir se préparer au pire, il est donc conseillé de créer des copies de sauvegarde de ses clés GPG, ainsi que de pré-générer un certificat de révocation.

Certificat de révocation

Ce certificat va être distribué si jamais la clé est compromise, il annule la validité de la clé

$ gpg2 –output revoke.pem –gen-revoke 86E40654500145BE

Le fichier revoke.pem est a garder de manière sécurisée, par exemple sur une clé USB ou carte SD chiffrée.

Backup en format numérique

Pour avoir à disposition sa clé privée rapidement en cas de problème, évidemment, à ne pas stocker en clair !

$ gpg2 –export-secret-keys –armor 86E40654500145BE > masterkey.pem

En cas de soucis, il suffit d’exécuter

gpg2 –import masterkey.pem pour retrouver sa clé privée.

Backup en format papier

Aussi contre-intuitif que cela peut paraitre, un backup papier est une bonne idée, car les clés USB et cartes SD peuvent s’effacer avec le temps, si on dispose d’un coffre, il est conseillé de garder une copie papier de sa clé privée.

$ gpg2 –export-secret-key 86E40654500145BE | paperkey –output-type raw | base64 > paperbak.txt

Paperkey retire les informations qui sont deja presentes dans la clé publique pour gagner de la place, il n’est pas possible de réimporter une clée privée via paperkey si on ne dispose pas de la cle publique !

Pour réimporter la clé, en cas de soucis, il faut donc faire :

echo « (contenu du document papier) » | base64 -d | paperkey –pubring public.pem | gpg2 –import

Utiliser une smartcard GPG/PGPCard

Il existe la norme PGPCard qui permet d’utiliser des smartcards pour stocker ses clés privées. Ces smartcards (qui se présentent sous la forme de carte à puce ou de dongle USB) permettent une bien meilleure sécurité en ayant ses clés privées sur le dongle, et non sur le PC (et donc théoriquement quasiment impossible à compromettre).

Normalement, toutes les smartcards PGPCard s’utilisent de la même manière, mais cette procédure n’a été testée sur que sur des yubikey4 pour le moment.
Sous debian/ubuntu et dérivés, il faut installer scdaemon et pcscd, pour les autres, voir le nom des packages équivalent.
Pour vérifier l’état de la smartcard avant (avec une carte neuve ou remise à zéro) :

$ gpg2 –card-status
Reader ………..: 1050:0407:X:0
Application ID …: (…)
Version ……….: 2.1
Manufacturer …..: Yubico
Serial number ….: (…)
Name of cardholder: [not set]
Language prefs …: [not set]
Sex …………..: unspecified
URL of public key : [not set]
Login data …….: [not set]
Signature PIN ….: not forced
Key attributes …: rsa2048 rsa2048 rsa2048
Max. PIN lengths .: 127 127 127
PIN retry counter : 3 0 3
Signature counter : 0
Signature key ….: [none]
Encryption key….: [none]
Authentication key: [none]
General key info..: [none]

On va commencer par configurer la smartcard avant d’y exporter les clés :

$ gpg2 –card-edit
gpg/card> admin
Admin commands are allowed
gpg/card> passwd
gpg: OpenPGP card no. (…) detected

1 – change PIN
2 – unblock PIN
3 – change Admin PIN
4 – set the Reset Code
Q – quit

Your selection? 3
PIN changed.

1 – change PIN
2 – unblock PIN
3 – change Admin PIN
4 – set the Reset Code
Q – quit

Your selection? 1
PIN changed.

1 – change PIN
2 – unblock PIN
3 – change Admin PIN
4 – set the Reset Code
Q – quit

Your selection? q

gpg/card> name
Cardholder’s surname: Pinpin
Cardholder’s given name: Parrot

gpg/card> lang
Language preferences: fr

gpg/card> login
Login data (account name): pinpin.parrot@nbs-system.com

gpg/card> sex
Sex ((M)ale, (F)emale or space): m

gpg/card> quit

Une fois que la smartcard est correctement configurée, il faut y exporter ses clés.

Attention: la commande keytocard ne fait pas une copie, mais déplace la clé privée en question ! Pour les commandes key, attention aux clés sélectionnées (celles avec ssb* donc)

$ gpg2 –expert –edit-key 86E40654500145BE
gpg (GnuPG) 2.2.12; Copyright (C) 2018 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Secret key is available.

pub rsa4096/86E40654500145BE
created: (creation date) expires: (2 ans apres) usage: C
trust: ultimate validity: ultimate
ssb rsa4096/8A752B11DD17F777
created: (creation date) expires: (2 ans apres) usage: E
ssb rsa4096/FE932A47056C55D7
created: (creation date) expires: (2 ans apres) usage: S
ssb rsa4096/54279AB1018E3E10
created: (creation date) expires: (2 ans apres) usage: A
ultimate. Pinpin Parrot pinpin.parrot@nbs-system.com

gpg> key 1
pub rsa4096/86E40654500145BE
created: (creation date) expires: (2 ans apres) usage: C
trust: ultimate validity: ultimate
ssb* rsa4096/8A752B11DD17F777
created: (creation date) expires: (2 ans apres) usage: E
ssb rsa4096/FE932A47056C55D7
created: (creation date) expires: (2 ans apres) usage: S
ssb rsa4096/54279AB1018E3E10
created: (creation date) expires: (2 ans apres) usage: A
ultimate. Pinpin Parrot pinpin.parrot@nbs-system.com

gpg> keytocard
Please select where to store the key:
(2) Encryption key
Your selection? 2
pub rsa4096/86E40654500145BE
created: (creation date) expires: (2 ans apres) usage: C
trust: ultimate validity: ultimate
ssb* rsa4096/8A752B11DD17F777
created: (creation date) expires: (2 ans apres) usage: E
ssb rsa4096/FE932A47056C55D7
created: (creation date) expires: (2 ans apres) usage: S
ssb rsa4096/54279AB1018E3E10
created: (creation date) expires: (2 ans apres) usage: A
ultimate. Pinpin Parrot pinpin.parrot@nbs-system.com

gpg> key 1
pub rsa4096/86E40654500145BE
created: (creation date) expires: (2 ans apres) usage: C
trust: ultimate validity: ultimate
ssb rsa4096/8A752B11DD17F777
created: (creation date) expires: (2 ans apres) usage: E
ssb rsa4096/FE932A47056C55D7
created: (creation date) expires: (2 ans apres) usage: S
ssb rsa4096/54279AB1018E3E10
created: (creation date) expires: (2 ans apres) usage: A
ultimate. Pinpin Parrot pinpin.parrot@nbs-system.com

gpg> key 2
pub rsa4096/86E40654500145BE
created: (creation date) expires: (2 ans apres) usage: C
trust: ultimate validity: ultimate
ssb rsa4096/8A752B11DD17F777
created: (creation date) expires: (2 ans apres) usage: E
ssb* rsa4096/FE932A47056C55D7
created: (creation date) expires: (2 ans apres) usage: S
ssb rsa4096/54279AB1018E3E10
created: (creation date) expires: (2 ans apres) usage: A
ultimate. Pinpin Parrot pinpin.parrot@nbs-system.com

gpg> keytocard
Please select where to store the key:
(1) Signature key
(3) Authentication key
Your selection? 1

pub rsa4096/86E40654500145BE
created: (creation date) expires: (2 ans apres) usage: C
trust: ultimate validity: ultimate
ssb rsa4096/8A752B11DD17F777
created: (creation date) expires: (2 ans apres) usage: E
ssb* rsa4096/FE932A47056C55D7
created: (creation date) expires: (2 ans apres) usage: S
ssb rsa4096/54279AB1018E3E10
created: (creation date) expires: (2 ans apres) usage: A
ultimate. Pinpin Parrot pinpin.parrot@nbs-system.com

gpg> key 2
pub rsa4096/86E40654500145BE
created: (creation date) expires: (2 ans apres) usage: C
trust: ultimate validity: ultimate
ssb rsa4096/8A752B11DD17F777
created: (creation date) expires: (2 ans apres) usage: E
ssb rsa4096/FE932A47056C55D7
created: (creation date) expires: (2 ans apres) usage: S
ssb rsa4096/54279AB1018E3E10
created: (creation date) expires: (2 ans apres) usage: A
ultimate. Pinpin Parrot pinpin.parrot@nbs-system.com

gpg> key 3
pub rsa4096/86E40654500145BE
created: (creation date) expires: (2 ans apres) usage: C
trust: ultimate validity: ultimate
ssb rsa4096/8A752B11DD17F777
created: (creation date) expires: (2 ans apres) usage: E
ssb rsa4096/FE932A47056C55D7
created: (creation date) expires: (2 ans apres) usage: S
ssb* rsa4096/54279AB1018E3E10
created: (creation date) expires: (2 ans apres) usage: A
ultimate. Pinpin Parrot pinpin.parrot@nbs-system.com

gpg> keytocard
Please select where to store the key:
(3) Authentication key
Your selection? 3

gpg> save

On peut vérifier que maintenant, si les clés secrètes sont bien dans la smartcard uniquement.

$ gpg2 –list-secret-keys
/home/pinpin/.gnupg/pubring.kbx
sec# rsa4096/86E40654500145BE (creation date) [C] [expires: (2ans apres)]
uid [ultimate] Pinpin Parrot pinpin.parrot@nbs-system.com
ssb> rsa4096/8A752B11DD17F777 (creation date) [E] [expires: (2ans apres)]
ssb> rsa4096/FE932A47056C55D7 (creation date) [S] [expires: (2ans apres)]
ssb> rsa4096/54279AB1018E3E10 (creation date) [A] [expires: (2ans apres)]

$ gpg2 –card-status

Reader ………..: 1050:0407:X:0
Application ID …: (…)
Version ……….: 2.1
Manufacturer …..: Yubico
Serial number ….: (…)
Name of cardholder: Pinpin Parrot
Language prefs …: fr
Sex …………..: male
URL of public key : [not set]
Login data …….: pinpin.parrot@nbs-system.com
Signature PIN ….: not forced
Key attributes …: rsa4096 rsa4096 rsa4096
Max. PIN lengths .: 127 127 127
PIN retry counter : 3 0 3
Signature counter : 0
Signature key ….: 1F2D B357 B87C 242E 850A 1CF5 8A75 2B11 DD17 F777
created ….: (creation date)
Encryption key….: 7CCD BF16 8D64 AFD3 E03D 8B0D FE93 2A47 056C 55D7
created ….: (creation date)
Authentication key: BB24 0740 E78E 2FA2 2C12 ACB9 5427 9AB1 018E 3E10
created ….: (creation date)
General key info..: sub rsa4096/FE932A47056C55D7 (creation date) Pinpin Parrot pinpin.parrot@nbs-system.com
sec# rsa4096/86E40654500145BE created: (creation date) expires: (2ans apres)
ssb> rsa4096/8A752B11DD17F777 created: (creation date) expires: (2ans apres)
card-no: (…)
ssb> rsa4096/FE932A47056C55D7 created: (creation date) expires: (2ans apres)
card-no: (…)
ssb> rsa4096/54279AB1018E3E10 created: (creation date) expires: (2ans apres)
card-no: (…)

La smartcard s’utilise de la même manière qu’avec des clés locales après cela.

Utilisation de sa clé GPG comme d’une clé SSH

Configurer gpg-agent et le redémarrer

~/.gnupg/gpg-agent.conf:
enable-ssh-support
default-cache-ttl 300
max-cache-ttl 1200
$ gpgconf –kill gpg-agent
$ eval $(pg-agent –daemon)

Configurer son shell pour utiliser gpg-agent

Dans son .bashrc ou .zshrc:

export SSH_AUTH_SOCK=$(gpgconf –list-dirs agent-ssh-socket)

Utilisation de GPG pour gérer un keyring avec passworstore

Setup du passwordstore

Installer passwordstore (apt install pass sur les debian et derives)

$ pass init 86E40654500145BE
mkdir: created directory ‘/home/pinpin/.password-store/’
Password store initialized for (…)
$ pass git init
Initialized empty Git repository in /home/pinpin/.password-store/.git/
[master (root-commit) (commit)] Add current contents of password store.
1 file changed, 1 insertion(+)
create mode 100644 .gpg-id
[master (commit)] Configure git repository for gpg file diff.
1 file changed, 1 insertion(+)
create mode 100644 .gitattributes

Utilisation de password-store

(Bonus) Utilisation de passwordstore sur Firefox ou Chrom(e|ium)

Sur Firefox (avec passff)

$ TARGET_DIR= »$HOME/.mozilla/native-messaging-hosts »
$ mkdir -p « $TARGET_DIR »
$ wget -O – https://raw.githubusercontent.com/passff/passff-host/master/src/passff.json | sed « s|PLACEHOLDER|$TARGET_DIR/passff.py| » > $TARGET_DIR/passff.json
$ chmod o+r $TARGET_DIR/passff.json
$ wget -O $TARGET_DIR/passff.py https://raw.githubusercontent.com/passff/passff-host/master/src/passff.py
$ chmod a+x $TARGET_DIR/passff.py

Sur Chrome/Chromium (avec browserpass)

TODO https://github.com/browserpass/

(Bonus) Menu avec rofi-pass

Il suffit de l’installer :

$ sudo wget -O /usr/local/bin/rofi-pass https://raw.githubusercontent.com/carnager/rofi-pass/master/rofi-pass
$ sudo chmod a+x /usr/local/bin/rofi-pass

Et de configurer un raccourci clavier de son choix (un choix usuel est super+p).

(Bonus) Passwordstore pour les (T)OTP

Installer pass-otp (apt install pass-extension-otp sur debian et derives)
L’utilisation se fait avec pass otp, des exemples sont donnes dans le readme du projet.

Utilisation de GPG pour signer et chiffrer/déchiffrer des mails

Avec enigmail sur thunderbird

Debian et derives

Il suffit d’installer le package enigmail (apt install enigmail)

Manuellement

Utilisation de GPG signer des commits git

Git permet (de base) de signer ses commits, cela permet d’éviter l’usurpation d’identité dans l’historique, pour se faire, il est soit possible de signer “à la demande” un commit :

$ git commit -S 86E40654500145BE -m « Commit signe »
Soit de configurer git pour qu’il signe par defaut les commits:
$ git config –global user.signingkey 86E40654500145BE
$ git config –global commit.gpgsign true


(et dans ce cas la, pour ne pas signer un commit, il faut rajouter –no-gpg-sign a la commande de commit)

Pour que Gitlab prenne en compte les commits signés, pensez à rajouter la clé publique dans votre profil Gitlab

Article signé Jason FAGNERE

Pour en savoir plus, concernant la création de votre clé GPG, n’hésitez pas à nous contacter !